草庐IT

c++ - TCP分片

全部标签

http - TCP 是同一主机中 Go 程序之间通信的最佳方法吗?

假设我有两个独立的Go程序在我的本地主机上运行,​​就性能而言,TCP是否是在两个程序之间传输数据的最佳方法? 最佳答案 简短的回答是否定的。TCP/IP堆栈很慢,尤其是TCP部分。因此,就性能而言,您最好使用本地进程间通信方法,例如应用程序或Unix套接字之间的共享内存。如果您必须使用网络堆栈进行通信(例如,您计划在主机之间移动应用程序),那么UDP或原始套接字是性能方面的最佳选择。只有当你:必须使用网络并且您需要一个可靠的通信channel,那么TCP是一个不错的选择。因此,只需浏览您的要求并确定它是否是最适合您的方法。

go - 在 TCP 连接的端口上发送 UDP 数据包

关闭。这个问题需要detailsorclarity.它目前不接受答案。想改善这个问题吗?通过editingthispost添加详细信息并澄清问题.3年前关闭。Improvethisquestion我有一个GolangTCP服务器,即net.TCPConn,连接在一个端口上,除了TCP流之外,它还必须接收UDP数据包并以UDP数据包进行响应。传入的UDP数据包在服务器上弹出(来自net.TCPConn.Read()),但我不知道如何再次发回UDP数据包。所有UDP写入方法仅适用于net.UDPConn.net.UDPConn.WriteMsgUDP()诱人地谈论它是应用于连接的还是非连接

for-loop - 从 go 中的 tcp 连接读取数据是否需要 for 循环?

有一个func来处理tcp连接:for{select{caseconn:=我的问题是,如果你使用for循环,你必须写return否则它会是一个死循环。如果它返回,这个handleClient函数将只执行一次。所以这里不需要for,对吧?我们仍然可以在没有for的情况下读取所有数据,这是正确的思考方式吗? 最佳答案 服务器处理连接的常见模式可能是funchandleClient(connnet.Conn){r:=bufio.NewReader(conn)for{line,err:=r.ReadBytes(byte('\n'))swit

unit-testing - 尝试在 TCP 监听器上提供服务时,由于超时,Go 测试模棱两可地失败

我有这个单元测试:funcTestServer(t*testing.T){db:=prepareDBConn(t)deferdb.Close()lis:=bufconn.Listen(1024*1024)t.Logf("Openedlistener:%v",lis)grpcServer:=grpc.NewServer(withUnaryInterceptor(),)t.Logf("Openedgrpcserver:%v",grpcServer)signKey:=getSignKey()ifsignKey==nil{t.Fatal("FailedtofindorparseRSApriva

sockets - 通过 TCP 处理多个客户端

好的,我刚开始学习golang,到目前为止我很喜欢它。但是我没有发现他们的文档适合入门者,这是我的问题。我想编写接受连接并向客户端写入内容的小服务器程序。到目前为止没有问题。然而,一旦它获得真正的功能,我就需要能够处理多个客户端,我认为这也是goroutines的一个很好的练习。listener,error:=net.Listen("tcp",remote)con,error:=listener.Accept()gohandleClient(&con);funchandleClient(con*net.Conn){我已经删除了大部分代码。问题是,无论我尝试什么,我都无法通过con。co

Golang tcp客户端服务器程序

我可以做服务器程序或客户端程序,但我不知道如何做客户端/服务器程序。有人知道这段代码有什么问题吗?谢谢。packagemainimport("net""os""bufio""io")funcmain(){listen,_:=net.Listen("tcp","localhost:9001")dial,_:=net.Dial("tcp","localhost:9002")scanner:=bufio.NewScanner(os.Stdin)forscanner.Scan(){conn,_:=listen.Accept()ifscanner.Text()=="a"{conn.Close()

c - 在 golang 中错误地解析带有标点符号的帖子数据

我知道如何在golang中解析post数据r.ParseForm()pid:=r.PostFormValue("pid")code:=r.PostFormValue("code")lang:=r.PostFormValue("lang")author:=r.PostFormValue("author")但是post数据是pid=1&code=#include\x0Aintmain()\x0A{\x0A\x09printf(\x223\x5Cn\x22);\x0A\x09return0;\x0A}&lang=c&author=11(这是从nginx的日志中获取的)所以当我解析数据时,它可

python - 无法访问显示组件 - 从 Windows 服务调用

我正在使用“nssm”运行服务。nssm服务启动调用exe的应用程序。该exe应该截取屏幕截图。当应用程序作为独立运行时,应用程序调用它时,exe工作正常。但是当应用程序作为服务运行时,exe被应用程序调用时无法访问显示(不起作用)。附言我已经尝试使用C、C++、Python、GoLang截屏exe 最佳答案 Windows服务(我假设您说的是Windows)用于后台处理,没有附加UI。所以不管你用什么语言,恐怕都行不通。 关于python-无法访问显示组件-从Windows服务调用,我

asynchronous - 如何有效地解码 gobs 并等待更多通过 tcp 连接到达

我想为游戏应用程序建立TCP连接。时间效率很重要。我想有效地接收许多对象。由于负载的原因,提高CPU效率也很重要。到目前为止,我可以确保每次使用go的net库调用连接时都会调用handleConnection。但是,一旦创建了连接,我就必须进行轮询(一遍又一遍地检查以查看连接上是否已准备好新数据)。这似乎效率低下。如果新数据不必要地占用CPU,我不想运行该检查以查看新数据是否已准备就绪。我一直在寻找诸如以下两个选项之类的东西,但没有找到我要找的东西。(1)执行以某种方式阻塞(不占用CPU)的读取操作,然后在连接流上准备好新内容时解除阻塞。我找不到那个。(2)采用异步方法,当新数据到达连

sockets - 如何发现客户端正在从 go 中的 tcp 缓冲区读取

我开始在一个项目中使用golang相当长的时间。在我的项目中,我必须实现一个响应tcp客户端的tcp服务器。服务器必须向客户端发送大量消息。问题是,当服务器向客户端连接写入消息时,它必须等到客户端从缓冲区读取该消息,然后再发送另一条消息(服务器必须等到客户端调用reader.ReadString('\n')方法)。在我的服务器代码中我写了:for{data:=但服务器将所有消息发送给客户端,而无需等待客户端中的ReadString。如何让服务器等到客户端读取一条消息,然后再发送另一条消息? 最佳答案 我认为要么赋值不明确,要么你误解